package com.woniuxy.controller;

import com.nimbusds.jose.JOSEException;
import com.woniuxy.dto.RegisterDTO;
import com.woniuxy.dto.UserDTO;
import com.woniuxy.entity.User;
import com.woniuxy.service.UserService;
import com.woniuxy.util.ResponseUtil;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;

/**
 * 用户控制器
 * 处理用户相关的HTTP请求
 */
@RestController
@RequestMapping("/user")
public class UserController {
    @Resource
    private UserService userService;

    /**
     * 管理员和医生端登录接口
     * @param user 用户信息
     * @return 登录结果
     * @throws JOSEException JWT异常
     */
    @PostMapping("/login")
    public ResponseUtil login(@RequestBody User user) throws JOSEException {
        return userService.login(user);
    }

    /**
     * 居民端登录接口
     * @param user 用户信息
     * @return 登录结果
     * @throws JOSEException JWT异常
     */
    @PostMapping("/residentLogin")
    public ResponseUtil residentLogin(@RequestBody User user) throws JOSEException {
        return userService.residentLogin(user);
    }
    
    /**
     * 居民端注册接口
     * @param registerDTO 注册信息
     * @return 注册结果
     * @throws InterruptedException 线程异常
     */
    @PostMapping("/registerResident")
    public ResponseUtil registerResident(@RequestBody RegisterDTO registerDTO) throws InterruptedException {
        return userService.registerResident(registerDTO);
    }

    /**
     * 管理员或医生端注册接口
     * @param registerDTO 注册信息
     * @return 注册结果
     */
    @PostMapping("/registerAdminOrDoctor")
    public ResponseUtil registerAdminOrDoctor(@RequestBody RegisterDTO registerDTO) {
        return userService.registerAdminOrDoctor(registerDTO);
    }

    /**
     * 密码的修改接口
     * @param userDTO 修改信息
     * @return 修改结果
     * */
    @PostMapping("/updatePassword")
    public ResponseUtil updatePassword(@RequestBody UserDTO userDTO) {
        return userService.updatePasswordById(userDTO);
    }
}
